package com.broada.apm.logic;

import java.util.List;

import com.broada.apm.ajax.Result;
import com.broada.apm.entity.ConfigVariable;
import com.broada.apm.entity.NoticeCommandException;
import com.broada.apm.indicator.api.common.ApmDataIndicatorException;
import com.broada.apm.model.Analyzer;
import com.broada.apm.model.Filter;

public interface AnalyzerLogic {
	
	/**
	 * 查询所有协议分析器
	 * @return
	 */
	public Result getAllAnalyzer(int pageIndex, int pageSize);
	
	/**
	 * 查询所有协议分析器
	 * @return
	 */
	public Analyzer getAnalyzerById(String analyzerId);
	
	/**
	 * 增加协议分析器信息 
	 * @param name
	 * @param ip
	 * @param port
	 * @return
	 */
	public Result addAnalyzer(Analyzer analyzer);
	
	/**
	 * 协议分析器异常情况修复
	 * @param analyzerId
	 * @return
	 */
	public Result reloadProtocol(String analyzerId);
	
	/**
	 * 查询协议分析器日志 
	 * @param name
	 * @param ip
	 * @param port
	 * @return
	 */
	public Result getAnalyzerLog(String analyzerId);
	
	/**
	 * 删除协议分析器信息
	 * @param id
	 * @return
	 */
	public Result deleteAnalyzer(String id) throws ApmDataIndicatorException;
	
	/**
	 * 根据analyzerId显示数据包过滤列表信息
	 * @param tab
	 * @return
	 */
	public Result getFilters(String analyzerId);
	
	/**
	 * 根据analyzerId删除数据包过滤列表信息
	 * @param tab
	 * @return
	 */
	public Result deleteFilters(String analyzerId);
	
	/**
	 * 根据analyzerId删除数据包过滤列表信息
	 * @param tab
	 * @return
	 */
	public Result deleteFilterById(String analyzerId, String id) throws ApmDataIndicatorException;
	
	/**
	 * 根据analyzerId添加数据包过滤列表信息
	 * @param tab
	 * @return
	 */
	public Result addFilter(Filter filter) throws ApmDataIndicatorException;
	
	/**
	 * 设置数据包过滤规则
	 * @param variable
	 * @param analyzerId
	 * @throws ApmDataIndicatorException
	 * @throws NoticeCommandException
	 */
	public List<Filter> addConfigData(ConfigVariable variable, String analyzerId) throws ApmDataIndicatorException, NoticeCommandException;
}
